<template>
    <div class="main">
        <el-form :inline="true" :model="selectConditon" class="demo-form-inline" style="margin-top: 1%; margin-left: 1%;">
            <el-form-item label="通知标题">
                <el-input v-model="selectConditon.titile" placeholder="通知标题"></el-input>
            </el-form-item>
            <el-form-item label="通知类型">
                <el-select v-model="selectConditon.type" placeholder="通知类型">
                    <el-option label="通知公告" value="1"></el-option>
                    <el-option label="教育学习" value="2"></el-option>
                </el-select>
            </el-form-item>
            <el-form-item label="发布时间" style="margin-left: 10px;">
                <el-date-picker v-model="time" type="datetimerange" start-placeholder="开始日期" end-placeholder="结束日期" value-format ="yyyy-MM-dd HH:mm:ss"
                    :default-time="['12:00:00']" @change="onConfirm" >
                </el-date-picker>
            </el-form-item>
            <el-form-item>
                <el-button type="primary" @click="onSubmit">查询</el-button>
            </el-form-item>
        </el-form>
        <el-table :data="tableData" border style="width: 100%">
            <el-table-column fixed prop="titile" label="通知标题" align="center">
            </el-table-column>
            <el-table-column prop="type" label="通知类型" align="center">
                <template slot-scope="scope">
                    <span style="margin-left: 10px">{{ scope.row.type === 1 ? "通知公告" : "教育学习" }}</span>
                </template>
            </el-table-column>
            <el-table-column prop="publish_time" label="发布时间" align="center">
            </el-table-column>
            <el-table-column prop="receiveNum" label="接收人数" align="center">
                <template slot-scope="scope">
                    <span style="margin-left: 10px">{{ scope.row.receiveNum === null ? 0 :scope.row.receiveNum }}</span>
                </template>
            </el-table-column>
            <el-table-column prop="unreceiveNum" label="未接受人数" align="center">
                <template slot-scope="scope">
                    <span style="margin-left: 10px">{{ scope.row.unreceiveNum === null ? 0 :scope.row.unreceiveNum }}</span>
                </template>
            </el-table-column>
            <el-table-column fixed="right" label="操作">
                <template slot-scope="scope" align="center">
                    <el-button @click="showNotice(scope.row)" type="text" size="small">查看</el-button>
                    <el-button type="text" size="small" v-show="!scope.row.notice_status"
                        @click="publishNotice(scope.row)">发送通知</el-button>
                </template>
            </el-table-column>
        </el-table>
        <div class="block" style="margin-top: 1%; margin-left: 30%;" v-show="!this.tableData.length == 0">
            <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange"
                :current-page="selectConditon.pageNum" :page-sizes="[5, 10, 20, 30]" :page-size="selectConditon.pageSize"
                layout="total, sizes, prev, pager, next, jumper" :total="selectConditon.total">
            </el-pagination>
        </div>
    </div>
</template>
  
<script>
import noticeApi from '@/api/notice'
import getStorage from '@/utils/getStorage'
export default {
    // 组件名称
    name: 'noticehistory',
    // 组件参数 接收来自父组件的数据
    props: {},
    // 局部注册的组件
    components: {},
    // 组件状态值
    data() {
        return {
            selectConditon: {
                //当前页码大小
                pageSize: 5,
                //总记录数
                total: 0,
                //当前页面
                pageNum: 1,
                //用户的id
                user_id: 0,
                //标题查询
                titile: '',
                //根据类型查询
                type: '',
                //发布的开始时间
                starttime: '',
                //发布的截止时间
                endtime: ''
            },
            tableData: [],
            time: [],
        }
    },
    // 计算属性
    computed: {},
    // 侦听器
    watch: {

    },
    // 组件方法
    methods: {
        //当用户确定时间的选定的时候触发这个方法，给选择selection中的starttime,和endtime赋值
        onConfirm(val){
            this.selectConditon.starttime = val[0];
            this.selectConditon.endtime = val[1];
        },
        //主动查询信息
        onSubmit() {
            this.updateList();
        },
        //跟新页面数据
        updateList() {
            noticeApi.getNoticesHistory(this.selectConditon).then(res => {
                //数据赋初始化值
                this.selectConditon.total = res.data.total;
                this.tableData = res.data.list;
            })
        },
        //当前页面显示数据条数改变的时候调用
        handleSizeChange(val) {
            this.selectConditon.pageSize = val;
            this.updateList();
        },
        //当前页面改变时候调用
        handleCurrentChange(val) {
            this.selectConditon.pageNum = val;
            this.updateList();
        },

        //查看通知详情页面
        showNotice(row) {
            console.log(row.context);
            this.$router.push({
                path: "/noticedetails",
                query: {
                    context: row.context
                }
            })
        },
        //发送消息给未接受消息的人
        publishNotice(row) {
            noticeApi.publishNotice(row.notice_id);
        }
    },
    // 以下是生命周期钩子   注：没用到的钩子请自行删除
    /**
    * 在实例初始化之后，组件属性计算之前，如data属性等
    */
    beforeCreate() {
    },
    /**
    * 组件实例创建完成，属性已绑定，但DOM还未生成，$ el属性还不存在
    */
    created() {

    },
    /**
    * 在挂载开始之前被调用：相关的 render 函数首次被调用。
    */
    beforeMount() {

    },
    /**
    * el 被新创建的 vm.$ el 替换，并挂载到实例上去之后调用该钩子。
    * 如果 root 实例挂载了一个文档内元素，当 mounted 被调用时 vm.$ el 也在文档内。
    */
    mounted() {
        //给user_id赋值
        this.selectConditon.user_id = getStorage.getAxiosUserId();
        this.updateList();
    },
    /**
    * 数据更新时调用，发生在虚拟 DOM 重新渲染和打补丁之前。
    * 你可以在这个钩子中进一步地更改状态，这不会触发附加的重渲染过程。
    */
    beforeUpdate() {
    },
    /**
    * 由于数据更改导致的虚拟 DOM 重新渲染和打补丁，在这之后会调用该钩子。
    * 当这个钩子被调用时，组件 DOM 已经更新，所以你现在可以执行依赖于 DOM 的操作。
    */
    updated() {
    },
    /**
    * keep-alive 组件激活时调用。 仅针对keep-alive 组件有效
    */
    activated() {
    },
    /**
    * keep-alive 组件停用时调用。 仅针对keep-alive 组件有效
    */
    deactivated() {
    },
    /**
    * 实例销毁之前调用。在这一步，实例仍然完全可用。
    */
    beforeDestroy() {
    },
    /**
    * Vue 实例销毁后调用。调用后，Vue 实例指示的所有东西都会解绑定，
    * 所有的事件监听器会被移除，所有的子实例也会被销毁。
    */
    destroyed() {
    }
}
</script> 
  
  
<style scoped ></style>